package com.test30_IO流;

import org.junit.Test;

import java.io.*;

/**
 * 字节流和字符流的区别
 */
public class Demo05_Flush {

    /**
     * 使用字节输出流，不关闭
     * PS：文件中存在内容
     * 不会进过内存缓冲区进行数据的暂存，而是直接与目标介质进行输出控制
     */
    @Test
    public void test1() throws Exception {
        File file = new File("F:" + File.separator + "muyan" + File.separator + "vip" + File.separator + "yootk.txt");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();  // 创建父目录
        }
        OutputStream output = new FileOutputStream(file);
        String message = "www.yootk.com";
        byte[] data = message.getBytes();   // 将字符串转为字节数组
        output.write(data);
        // 不关闭
    }

    /**
     * 使用字符输出流，不关闭
     * PS：文件中不存在有任何的内容
     * 必须经过内存处理后，才可以进行内容输出
     * 如果是中文处理，首选是字符流
     */
    @Test
    public void test2() throws Exception {
        File file = new File("F:" + File.separator + "muyan" + File.separator + "vip" + File.separator + "yootk.txt");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        Writer out = new FileWriter(file);
        String message = "www.yootk.com";
        out.write(message);   // 输出信息
        out.append("\r\nedu.yootk.com");
        // 不关闭
    }

    /**
     * 强制刷新缓冲区
     * PS：会写入文件中
     */
    @Test
    public void test3() throws Exception {
        File file = new File("F:" + File.separator + "muyan" + File.separator + "vip" + File.separator + "yootk.txt");
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        Writer out = new FileWriter(file);
        String message = "www.yootk.com";
        out.write(message);   // 输出信息
        out.append("\r\nedu.yootk.com");
        // 不关闭
        out.flush();    // 刷新缓冲区
    }
}
